package com.zmn.mcc.services.interfaces.permit;

import com.zmn.common.dto.StatusDTO;
import com.zmn.mcc.common.dto.permit.PermitLitDO;
import com.zmn.mcc.model.entity.permit.McPermit;
import com.zmn.mcc.model.entity.permit.McPermitQuery;

import java.util.List;

/**
 * @author heguanghua
 * @since 2020/04/14 13:55
 */
public interface PermitService {

    McPermit findByKey(Integer permitId);

    List<McPermit> listPageByQuery(McPermitQuery query);

    List<McPermit> listAll();

    List<McPermit> listAll(Integer status);

    List<McPermit> listBySysId(Integer sysId);

    List<McPermit> listBySysId(Integer sysId, Integer status);

    List<McPermit> listByModuleId(Integer moduleId);

    List<McPermit> listByModuleId(Integer moduleId, Integer status);

    List<McPermit> listByParentId(Integer parentId);

    List<McPermit> listByParentId(Integer parentId, Integer status);

    List<McPermit> listByQuery(McPermitQuery query);

    /**
     * 根据角色查询简化权限对象列表
     *
     * @param roleIds 角色ID集
     * @param sysId   系统ID
     * @return
     */
    List<PermitLitDO> listPermitLitBySysIdAndRoleIds(List<Integer> roleIds, Integer sysId);

    List<PermitLitDO> listPermitLitByQuery(McPermitQuery query);

    Integer countByQuery(McPermitQuery query);


    Integer updateByKey(McPermit permit);

    Integer updateStatus(Integer permitId, Integer status, String updater);

    Integer updateStatus(McPermit permit);

    Integer updateStatusBatch(List<Integer> permitIds, Integer status, String updater);

    Integer updateStatusBatch(StatusDTO dto);

    Integer updateSort(Integer permitId, Integer sort);

    Integer updateSort(McPermit permit);


    Integer insert(McPermit permit);


    Integer deleteByKey(Integer permitId);
}
